package com.kwshare.user.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.kwshare.common.core.domain.user.Role;
import com.kwshare.user.mapper.RoleMapper;
import com.kwshare.user.service.IRoleService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 用户接口
 *
 * @author yangjing
 */
@Service
public class RoleServiceImpl implements IRoleService {

    @Resource
    private RoleMapper roleMapper;

    /**
     * 查询角色列表信息
     *
     * @param roleName 角色名称
     * @return 结果
     */
    @Override
    public List<Role> getRoleList(String roleName) {
        QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
        queryWrapper.like("role_name",roleName);
        queryWrapper.eq("del_flag",0);
        return roleMapper.selectList(queryWrapper);
    }

    /**
     * 查询角色列表信息
     *
     * @return 结果
     */
    @Override
    public List<Role> getRoleAll() {
        QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("del_flag",0);
        return roleMapper.selectList(queryWrapper);
    }

    /**
     * 新增角色
     *
     * @param roleName 角色名称
     * @param createBy 创建者
     * @return 结果
     */
    @Override
    public int insertRole(String roleName,String createBy) {
        Role role = new Role();
        role.setId(null);
        role.setRoleName(roleName);
        role.setCreateBy(createBy);
        role.setCreateTime(new Date());
        return roleMapper.insert(role);
    }

    /**
     * 删除角色
     *
     * @param id 角色id
     * @return 结果
     */
    @Override
    public int deleteRoleById(Long id) {
        UpdateWrapper<Role> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id",id);
        updateWrapper.set("del_flag",2);
        return roleMapper.update(null,updateWrapper);
    }

    /**
     * 更新角色
     *
     * @param id 角色id
     * @param roleName 角色名称
     * @param updateBy 更新者
     * @return 结果
     */
    @Override
    public int updateRole(Long id, String roleName,String updateBy) {
        UpdateWrapper<Role> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id",id);
        updateWrapper.set("role_name",roleName);
        updateWrapper.set("update_by",updateBy);
        updateWrapper.set("update_time",new Date());
        return roleMapper.update(null,updateWrapper);
    }
}
